﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace UI.Models.ShoppingCart
{
    [Serializable]
    public class Cart
    {
        public List<CartItem> CartItems { get; private set; }

        public Cart()
        {
            CartItems= new List<CartItem>();
        }

        public decimal Total
        {
            get
            {
                decimal total = 0;
                foreach (var item in CartItems)
                {
                    decimal totalitem = item.Price * item.Quantity;
                    total = total + totalitem;
                }

                return total;
            }
        }


        public void AddCartItem(CartItem cartItem)
        {
            if (cartItem == null) throw new ArgumentNullException("cartItem");
            //is there already a cartItem for the same itemid
            var foundCartItem = CartItems.SingleOrDefault(c => c.ItemId == cartItem.ItemId);
            if (foundCartItem!=null)
            {
                //update the cartItem quantity
                foundCartItem.Quantity += cartItem.Quantity;
            }
            else
            {
                //add new cartitem
                CartItems.Add(cartItem);
            }
           
        }

        public void RemoveCartItem(string itemId)
        {
            CartItem found = CartItems.SingleOrDefault(c => c.ItemId == itemId);
            if (found != null)
            {
                CartItems.Remove(found);
            }
        }
    }
}